/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.yxw.live_vod_boot.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsAddDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditLivePriceDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditOrderDTO;
import com.yxw.live_vod_boot.dto.YxLiveActivityProductsEditShowDurationDTO;
import com.yxw.live_vod_facade.dto.YxLiveActivityProductsQueryDTO;
import com.yxw.live_vod_boot.entity.YxLiveActivityProductsEntity;
import com.yxw.live_vod_boot.entity.YxLiveDomainEntity;
import com.yxw.live_vod_boot.entity.YxLiveShopUserEntity;
import com.yxw.live_vod_facade.dto.ShopManagerAddVirtualVisitorDTO;
import com.yxw.live_vod_facade.dto.LiveShopAddApplyDTO;
import com.yxw.live_vod_facade.dto.ShopUserEditLiveApplyDTO;
import com.yxw.live_vod_facade.dto.UserGetPlayURLDTO;
import com.yxw.live_vod_facade.dto.LiveShopGetPushURLDTO;
import com.yxw.live_vod_facade.dto.LiveShopAddUserDTO;
import com.yxw.live_vod_facade.dto.LiveShopDeleteUserDTO;
import com.yxw.live_vod_facade.dto.LiveShopEditUserDTO;
import com.yxw.live_vod_facade.dto.ShopSendLiveApplyDTO;
import com.yxw.live_vod_facade.dto.ClientSendStartPushApplyDTO;
import com.yxw.live_vod_facade.dto.YxLivePushLogDTO;
import com.yxw.live_vod_facade.dto.ShopSendLiveQueryDTO;
import com.yxw.yxnet_cd_center.common.utils.BaseResult;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import org.springframework.web.multipart.MultipartFile;
import com.yxw.live_vod_facade.vo.LiveActivityProductsVO;
import com.yxw.live_vod_boot.vo.LiveShopUsersVO;
import com.yxw.live_vod_facade.dto.QueryStringIdDTO;
import com.yxw.live_vod_boot.dto.ShopManagerEndLiveDTO;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * 直播处理逻辑服务
 * @author hjx
 * @date 2023-11-17
 */
public interface LiveProcessService {
    /**
     * 店铺开通直播权限  HttpServletRequest httpRequest,
     * @param LiveShopAddApplyDTO
     * @return BaseResult
     */    
    public BaseResult shopSendApply(HttpServletRequest httpRequest,MultipartFile defaultHomePicture,LiveShopAddApplyDTO oLiveShopAddApplyDTO);
    /*** 
    * 根据店铺Id查询是否开通直播申请
    * @param oYxLiveShopApplyDTO
    * @return BaseResult
    **/
    public BaseResult shopQuryApplyByLiveShopId(Long liveShopId);
    /**
     * 店铺修改直播间信息
     * @param LiveShopAddApplyDTO
     * @return BaseResult
     */      
    public BaseResult shopUserEditShopApply(HttpServletRequest httpRequest,ShopUserEditLiveApplyDTO oShopUserEditLiveApplyDTO);
    /**
     * 店铺修改直播间图片
     * @param defaultHomePicture
     * @param shopApplyId
     * @return BaseResult
     */      
    public BaseResult shopUserEditLiveApplyPicture(HttpServletRequest httpRequest,MultipartFile defaultHomePicture,String liveApplyId);
    /**
     * 店铺添加店员
     * @param LiveShopAddUserDTO
     * @return BaseResult
     */       
    public BaseResult addShopUser(HttpServletRequest httpRequest,LiveShopAddUserDTO oShopAddUserDTO);
    /**
     * 店铺删除店员
     * @param LiveShopAddUserDTO
     * @return BaseResult
     */     
    public BaseResult deleteShopUser(HttpServletRequest httpRequest,LiveShopDeleteUserDTO oShopDeleteUserDTO);
    /**
     * 店铺修改店员
     * @param LiveShopAddUserDTO
     * @return BaseResult
     */      
    public BaseResult editShopUser(HttpServletRequest httpRequest,LiveShopEditUserDTO oLiveShopEditUserDTO);
    /*** 
    * 自定义查询开通直播的店铺员工表
    * @param liveShopId
    * @return List<YxLiveShopUserEntity>
    **/
    public List<YxLiveShopUserEntity> selectYxLiveShopUserList(Long liveShopId);
    /*** 
    * 自定义查询开通直播的店铺员工表
    * @param liveShopId
    * @return List<YxLiveShopUserEntity>
    **/
    public List<LiveShopUsersVO> getLiveShopOnlineUsers(Long liveShopId,String liveId);
    /**
     * 店铺发送开播申请
     * @param LiveShopGetPushURLDTO
     * @return BaseResult ShopSendLiveApplyDTO oShopSendLiveApplyDTO
     */     
    public BaseResult shopSendLiveApply(HttpServletRequest httpRequest,Long liveShopId);    
    /**
     * 店铺获取推流地址
     * @param LiveShopGetPushURLDTO
     * @return BaseResult
     */     
    public BaseResult shopGetPushURL(HttpServletRequest httpRequest,LiveShopGetPushURLDTO shopGetPushURLDTO);
    /**
     * 店铺客户端发送开始推流申请
     * @param 
     * @return BaseResult
     */     
    public BaseResult clientSendStartPushApply(HttpServletRequest httpRequest,ClientSendStartPushApplyDTO oClientSendStartPushApplyDTO);
    /**
     * 店铺客户端根据推流地址开始推流
     * @param 
     * @return BaseResult
     */     
    public BaseResult clientSendPushLog(HttpServletRequest httpRequest,YxLivePushLogDTO oYxLivePushLogDTO);
    /**
     * 店铺客户端发送结束推流申请
     * @param 
     * @return BaseResult
     */     
    public BaseResult clientSendEndPushApply(HttpServletRequest httpRequest,String liveId); 
    /**
     * 用户获取直播间播放地址
     * @param LiveShopAddUserDTO
     * @return BaseResult
     */    
    public BaseResult userGetPlayURL(HttpServletRequest httpRequest,UserGetPlayURLDTO userGetPlayURLDTO);
     /**
     * 店铺查询直播
     * @param oShopSendLiveQueryDTO
     * @return BaseResult
     */    
    public BaseResult shopSendLiveQuery(HttpServletRequest httpRequest,ShopSendLiveQueryDTO oShopSendLiveQueryDTO);
    /*
    *获取缺省的AppName
    */
    public String getDefaultAppName();
    /*
    *获取推流域名
    */
    public YxLiveDomainEntity getPushDomain();
    /*
    *获取拉流域名
    */
    public YxLiveDomainEntity getLiveDomain();
    /*** 
    * 获取正在生效的主播协议
    * @return List<YxLiveAgreementEntity>
    **/  
    public BaseResult selectActiveAgreement();
    /*** 
    * 增加店铺的商品
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    public BaseResult liveActivityProductsInsert(HttpServletRequest httpRequest,YxLiveActivityProductsAddDTO oYxLiveActivityProductsAddDTOList);
    /*** 
    * 修改店铺的商品时长
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    public BaseResult liveActivityProductsEditShowDuration(YxLiveActivityProductsEditShowDurationDTO oYxLiveActivityProductsEditShowDurationDTO);
    /*** 
    * 修改店铺商品的价格
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    public BaseResult liveActivityProductsEditLivePrice(HttpServletRequest httpRequest,YxLiveActivityProductsEditLivePriceDTO oYxLiveActivityProductsEditLivePriceDTO);
    /*** 
    * 修改店铺商品的弹窗时长
    * @param oYxLiveActivityProductsDTO
    * @return BaseResult
    **/
    public BaseResult liveActivityProductsEditOrder(YxLiveActivityProductsEditOrderDTO oYxLiveActivityProductsEditOrderDTO);
    /*** 
    * 删除店铺的商品
    * @param id
    * @return BaseResult
    **/
    public BaseResult liveActivityProductsDeleteById(HttpServletRequest httpRequest,Long id);
    
    /*** 
    * 按列表删除店铺的商品 
    * @param oYxLiveActivityProductsAddDTOList
    * @return BaseResult
    **/
    public BaseResult liveProductsDeleteList(HttpServletRequest httpRequest,YxLiveActivityProductsAddDTO oYxLiveActivityProductsAddDTOList);
    /*** 
    * 根据id查找店铺的商品
    * @param id
    * @return YxLiveActivityProductsEntity
    **/
    public YxLiveActivityProductsEntity liveActivityProductsSelectById(Long id);
    /*** 
    * 自定义查询店铺的商品
    * @param oYxLiveActivityProductsQueryDTO
    * @return List<YxLiveActivityProductsEntity>
    **/
    public List<LiveActivityProductsVO> liveActivityProductsSelectList(YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO);

    /*** 
    * 自定义统计店铺的商品
    * @param oYxLiveActivityProductsQueryDTO
    * @return Integer
    **/
    public Integer liveActivityProductsSelectCount(YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO);
    /*** 
    * 自定义分页查询店铺的商品
    * @param currentPage 当前页
    * @param pageSize 分页大小
    * @param oYxLiveActivityProductsQueryDTO
    * @return Page
    **/
    public Page<LiveActivityProductsVO> liveActivityProductsSelectPage(int currentPage,int pageSize,YxLiveActivityProductsQueryDTO oYxLiveActivityProductsQueryDTO);
    /*** 
    * 订单扣减
    * @param applyId 申请Id
    * @param liveId 直播流Id
    * @param orderFeeDecr
    * @return BaseResult
    **/    
    public BaseResult liveOrderDecr(String applyId,String liveId,BigDecimal orderFeeDecr);
    /*** 
    * 商品讲解
    * @param liveId 直播流Id
    * @param productid  产品id
    * @return BaseResult
    **/
    public BaseResult liveActivityProductExplanation(HttpServletRequest httpRequest,String liveId,Long productid);
    
    
    /*** 
    * 取消商品讲解
    * @param liveId 直播流Id
    * @param productid  产品id
    * @return BaseResult
    **/
    public BaseResult liveActivityProductCancelExplanation(HttpServletRequest httpRequest,String liveId,Long productid);
    
    /*** 
    * 管理员结束直播
    * @param QueryStringIdDTO
    * @return int
    **/
    public BaseResult shopManagerEndLive(HttpServletRequest httpRequest,ShopManagerEndLiveDTO oShopManagerEndLiveDTO);
    /*** 
    * 管理员添加虚拟人数
    * @param QueryStringIdDTO
    * @return int
    **/
    public BaseResult shopManagerAddVirtualVisitor(HttpServletRequest httpRequest,ShopManagerAddVirtualVisitorDTO oShopManagerAddVirtualVisitorDTO);
    /*** 
    * 系统管理员添加虚拟人数
    * @param QueryStringIdDTO
    * @return int
    **/
    public BaseResult systemManagerAddVirtualVisitor(HttpServletRequest httpRequest,ShopManagerAddVirtualVisitorDTO oShopManagerAddVirtualVisitorDTO);    
}
